package com.iori.common.util;

import java.util.StringTokenizer;

/**
 * Stringツールクラス
 *
 * @author Founder
 *
 */
public class StringUtil {

	public static final String NULL_STR = "null";
	public static final String EMPTY_STR = "";

	/**
	 * 特定の区切りで区切られた同一タイプ情報の複数文字列を文字列arrayに分解する
	 *
	 * @param strOrigin
	 *            オリジナル文字列
	 * @param separator
	 *            区切り
	 * @return
	 *
	 */
	public static String[] parserString(String strOrig, String separator) {

		StringTokenizer st;
		String strItem;
		if (strOrig == null) {
			return new String[0];
		}
		st = new StringTokenizer(strOrig, separator);
		String[] returnValue = new String[st.countTokens()];
		int index = 0;
		while (st.hasMoreTokens()) {
			strItem = st.nextToken();
			if (strItem != null && strItem.trim().length() != 0) {
				returnValue[index++] = strItem;
			}
		}
		return returnValue;

	}

	/**
	 * 文字列置換
	 *
	 * @param str
	 *            オリジナル文字列
	 * @param from
	 *            置換された文字列
	 * @param to
	 *            置換文字列
	 * @return 置換後の文字列
	 */
	public static String replaceStr(String str, String from, String to) {
		if (str == null) {
			return EMPTY_STR;
		}
		StringBuffer sbf = new StringBuffer();
		sbf.append(str);
		while (str.indexOf(from) != -1) {
			sbf.replace(str.indexOf(from), str.indexOf(from) + from.length(),
					to);
			str = sbf.toString();
		}
		return sbf.toString();
	}

	/**
	 * 空文字を""に変換する
	 *
	 * @param strOrig
	 *            オリジナル文字列
	 * @return 変換後の文字列
	 */
	public static String convertStringNull(String str) {

		String returnStr = null;
		if (str == null || NULL_STR.equals(str.toLowerCase())) {
			returnStr = EMPTY_STR;
		} else {
			returnStr = str;
		}
		return returnStr;
	}

	/**
	 * 文字列の頭末スペースを削除する
	 *
	 * @param str
	 *            オリジナル文字列
	 * @return 処理後の文字列
	 */
	public static String trim(String str) {
		if (str == null) {
			return null;
		}
		return str.trim();
	}

	/**
	 * 文字列の妥当性をチェックする（非null,"","null"等）
	 *
	 * @param str
	 *            チェックされた文字列
	 * @return チェック結果
	 */
	static public boolean validString(String str) {
		if (str == null)
			return false;
		if (str.equals(NULL_STR.equals(str.toLowerCase())))
			return false;
		if (str.trim().length() == 0)
			return false;
		return (0 < str.length());
	}

}
